home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / SNIP9_91.ARJ / POSIX_LS.C < prev    next >
C/C++ Source or Header  |  1991-09-12  |  3KB  |  77 lines

  1. /*
  2. **  POSIX_LS.C - Directory lister using POSIX style processing
  3. */
  4.  
  5. #include <stdio.h>
  6. #include "dirent.h"
  7.  
  8. #define SUCCESS 0
  9.  
  10. void dumpdir(char *dirname, char *mask)
  11. {
  12.       DOS_DIR *dirp;
  13.       struct DSTRUCT *dstruct;
  14.  
  15.       dirp = opendir(dirname);
  16.       if (!dirp)
  17.       {
  18.             printf("Opening %s returned NULL\n\n", dirname);
  19.             return;
  20.       }
  21.       printf("Dir %s has %d entries\n", dirname, dirp->dd_size);
  22.       do
  23.       {
  24.             if (dstruct = readdir(dirp))
  25.             {
  26.                   if (SUCCESS == dirmask(dstruct, mask, NULL, FA_ANY, 0))
  27.                         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  28.             }
  29.             else  puts("EOF\n");
  30.       } while (dstruct);
  31.       printf("seekdir( -1) returned %p\n", seekdir(dirp, -1, SEEK_SET));
  32.       printf("seekdir(999) returned %p\n", seekdir(dirp, 999, SEEK_SET));
  33.       printf("seekdir(0, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  34.             0, SEEK_SET));
  35.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  36.       printf("seekdir(1, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  37.             1, SEEK_SET));
  38.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  39.       printf("seekdir(4, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  40.             4, SEEK_SET));
  41.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  42.       printf("seekdir(4, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  43.             4, SEEK_CUR));
  44.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  45.       printf("seekdir(-1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  46.             -1, SEEK_CUR));
  47.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  48.       printf("seekdir(1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  49.             1, SEEK_CUR));
  50.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  51.       printf("seekdir(0, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  52.             0, SEEK_END));
  53.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  54.       printf("seekdir(-1, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  55.             -1, SEEK_END));
  56.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  57.       printf("seekdir(-4, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  58.             -4, SEEK_END));
  59.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  60.       closedir(dirp);
  61. }
  62.  
  63. main(int argc, char *argv[])
  64. {
  65.       int i;
  66.       char *mask = NULL, *dirname;
  67.  
  68.       if (1 < argc)
  69.             dirname = argv[1];
  70.       else  dirname = ".";
  71.  
  72.       if (2 < argc)
  73.             mask = argv[2];
  74.       printf("Calling dumpdir(%s, %s)\n\n", dirname, mask);
  75.       dumpdir(dirname, mask);
  76. }
  77.